草庐IT

c++ - std::move 操作 C++

全部标签

c - 如何正确使用 ExAllocatePoolWithTag 使其不返回 STATUS_INSUFFICIENT_RESOURCES?

我正在为IO过滤器驱动程序编写内核模式测试。当我运行我的测试时,它们都通过了,但是如果我连续运行它们3次,测试就会开始失败。我将问题缩小到ExAllocatePoolWithTag一段时间后开始返回STATUS_INSUFFICIENT_RESOURCES。为了重现这个问题我写了一个专门的测试staticvoid__stdcallTestFoo_StressLoad(){inti;for(i=0;i我的使用模式是:分配内存(ExAllocatePoolWithTag)执行单个测试释放内存(ExFreePoolWithTag)我的问题是:如何正确使用ExAllocatePoolWithT

windows - 如何使用 Puppet 基于 32/64 位操作系统动态选择系统文件夹的路径

我正在使用Puppet在Windows2008服务器R2上自动部署我的Web应用程序。我将通过几个步骤访问系统文件夹(System32或SysWOW64,具体取决于32/64位操作系统)。让我采取以下步骤之一:我将访问“appcmd.exe”以启动/停止网站。当脚本在32位机器上运行时,我需要访问位于'C:/Windows/System32/inetsrv/appcmd.exe'的文件,当脚本在64位机器上运行时机器,我需要访问位于'C:/Windows/SysWOW64/inetsrv/appcmd.exe'的文件这是我编写的脚本部分。我不想硬编码路径。根据操作系统,我希望选择“ap

python - Cython 包装器使用 cl.exe (windows) 将 .c 文件编译为 .pyd

目录结构Cextended_API_504/lib/Cextended.dllCextended.liblibcextended.asrc/Cextended.hCextendedEx.cCextendedEx.hexample/Demo.ccompileDemo.batcompileDemo.shCextendedPy.pyxcompile.batcompile.shCextendedPy.pyxcdefexternfrom"Cextended.h":...cdefexternfrom"CextendedEx.h":...cdefclasswrapper:...Cextended_A

c++ - 使用统计 API 获取不正确的文件修改时间

我在获取文件的修改时间时看到一个奇怪的行为。我们一直在打电话_stat64在我们的项目中获取文件修改的方法如下。intmy_win_stat(constchar*path,struct_stati64*buf){if(_stati64(path,buf)==0){std::coutst_mtime当我使用epochconvertor转换st_mtime变量返回的纪元时间时,它显示比我系统上设置的当前时间提前2:30小时。当我从不同的测试项目调用相同的API时,我看到了正确的mtime(即根据我的系统显示的文件的mtime)。if(_stat64("D:\\engine_cost.frm

c# - 使用 VS 2010 调试导入的 dll

我在尝试从C#代码调用WinAPI函数时遇到问题。我有很多导入,其中很多工作正常,但其中一些没有,并导致意外中断主程序,没有任何消息、异常类型,什么都没有,只是掉下所有窗口并退出。我在代码中有两种方法:通过我开发的库,其中有更多的winapi调用,我懒得编写特定结构、指针等代码,并直接从user32.dll导入,如下所示:[DllImport(@"tradeInterop.dll")]publicstaticexternvoidChooseInstrumentByMouse(UInt32hwnd,intbaseX,intbaseY,intidx,int_isDown);[DllImpo

c - 如何在 C 中将 IOCTL 发送到 Windows 上的所有驱动程序

有人可以向我提供示例C代码,其中列出了我可以使用Createfile()打开的所有设备名称吗?我总是收到错误代码3:路径不存在不起作用的示例代码:#define_CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#include#include#pragmacomment(lib,"Setupapi.lib")intmain(void){HDEVINFOdeviceInfoList;deviceInfoList=SetupDiGetClassDevs

c - 使用 Windows 调试器查看用 C 写入的内存位置?

我在dosbox中运行了TurboC和Windows调试我有这个C程序,它有两条主线,如你所见。inta=5然后一行显示a的地址,printf("addressofa=%x",&a)我运行它好像告诉我a已经分配到了fff4的地址现在我想使用调试来希望在该内存地址看到5的值但是没有显示如何在调试中看到它? 最佳答案 这是编译后的main函数的DEBUG输出:16E1:01FA55PUSHBP16E1:01FB8BECMOVBP,SP16E1:01FD83EC02SUBSP,+0216E1:0200C746FE0500MOVWORDPT

c# - 如何取消 PIPE 操作?

我有一个C++和C#应用程序,我在其中使用命名管道向彼此发送命令。它运行良好,直到我注意到我无法取消Read()调用,我正在使用一个停止变量但没有注意到这不是我所需要的,因为它无法读取停止变量状态直到离开Read()称呼。我发现我会使用PIPE_NOWAITCreateNamedPipe()中的属性称呼。当我添加它时,C#抛出System.NullReferenceException因为FileStream为null,所以它是从newFileStream(clientHandle,FileAccess.ReadWrite,BUFFER_SIZE,true);创建的,其中clientHa

c - 使用和不使用 FILE_FLAG_NO_BUFFERING 的 NTFS 文件访问时间

我正在尝试对NTFS的文件读取时间(顺序访问)进行基准测试。我的代码获取开始时间,执行大小等于4096字节(系统上NTFS的簇大小)的读取并记录结束时间。然后存储两个时间之间的差异,并重复该过程,直到到达文件末尾。我目前使用的文件大小是40K,所以得到10个时差值。当访问没有FILE_FLAG_NO_BUFFERING打开的文件(使用CreateFile)时,第一个block的访问时间接近30微秒,然后下降到大约7微秒用于后续访问(由于缓存)。当使用FILE_FLAG_NO_BUFFERING时,第一个block的访问时间接近21毫秒,随后的访问时间下降到大约175微秒。第一个bloc

windows - 创建 QEmu guest 操作系统的 WinDbg 可读转储

我在Linux上运行QEmu,虚拟化操作系统是WindowsXP。我想要第一种或第二种可能性:在QEmu中应用一个命令,创建一个可以用WinDbg打开的转储在QEmu中应用一个创建特定类型转储的命令,然后使用另一个实用程序使其可被WinDbg读取我知道QEmu的“dump-guest-memory”(创建ELF转储)、rekall的raw2dmp插件和Volatility的raw2dmp插件。WinDbg可以扫描输出,但实际上您会遇到header错误的问题-可能是转储中最重要的部分,当使用上述工具/插件创建转储时,这毫无用处。许多字段缺少正确的详细信息。与Windows操作系统本身创建